/*
 * Copyright (c) 2022-2025 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

export {
    observableProxy
} from '@koalaui/common'

export {
    AnimatedState,
    ImplicitAnimationProvider,
    MutableAnimatedState,
    ParametrizedAnimationProvider,
    StateAnimator,
    animatedState,
    mutableAnimatedState,
    stateAnimator,
} from './animation/AnimatedState'
export {
    AnimationRange,
    ArrayAnimationRange,
    NumberAnimationRange,
} from './animation/AnimationRange'
export {
    Easing,
    EasingCurve,
    EasingStepJump,
} from './animation/Easing'
export {
    createAnimationTimer,
    getAnimationTimer,
} from './animation/GlobalTimer'
export {
    rememberAnimatedState,
    rememberAnimator,
    rememberMutableAnimatedState,
    rememberMutableAnimatedStateNumber,
    rememberNumberTransition,
    rememberTransition,
    sampledValue,
} from './animation/memo'
export {
    AnimationSpec,
    OnEdge,
    OnPause,
    TimeAnimation,
    animation,
    blinkAnimation,
    constAnimation,
    countAnimation,
    frameAnimation,
    linearTransition,
    numberAnimation,
    periodicAnimation,
    periodicAnimationWithDelay,
    smoothAnimation,
    timeAnimation,
    transition,
} from './animation/TimeAnimation'

export {
    RuntimeProfiler,
    RuntimeTracer,
} from './common/RuntimeProfiler'

export {
    memoBind,
    memoBind2,
    memoPartialBind2_1,
    memoPartialBind3_2,
} from './memo/bind'
export {
    OnChange,
    RunEffect,
} from './memo/changeListener'
export {
    contextLocal,
    contextLocalScope,
    contextLocalValue,
} from './memo/contextLocal'
export {
    memoRoot,
    memoEntry,
    memoEntry1,
    memoEntry2,
} from './memo/entry'
export {
    DataNode,
    NodeAttach,
    contextNode,
} from './memo/node'
export {
    memoize,
    memoLifecycle,
    once,
    remember,
    rememberArrayState,
    rememberComputableState,
    rememberComputableValue,
    rememberControlledScope,
    rememberDisposable,
    rememberMutableAsyncState,
    rememberMutableState,
} from './memo/remember'
export {
    Repeat,
    RepeatByArray,
    RepeatRange,
    RepeatWithKey,
} from './memo/repeat'
export {
    TestNode,
    ReusableTestNode,
    testRoot,
    testTick,
    testUpdate,
} from './memo/testing'

export {
    Dependent,
} from './states/Dependency'
export {
    Disposable,
    disposeContent,
    disposeContentBackward,
    disposeContentForward,
} from './states/Disposable'
export {
    GlobalStateManager,
    arrayState,
    callScheduledCallbacks,
    mutableState,
    scheduleCallback,
    updateStateManager,
    globalMutableState,
} from './states/GlobalStateManager'
export {
    ArrayState,
    CONTEXT_ROOT_NODE,
    CONTEXT_ROOT_SCOPE,
    ComputableState,
    ControlledScope,
    createStateManager,
    Equivalent,
    InternalScope,
    MutableState,
    StateManager,
    StateManagerImpl,
    ValueTracker,
} from './states/State'

export {
    __context,
    __id,
    __key,
    __hash,
    __memo_transformed,
    __memo_transformed_before,
    __memo_transformed_after,
} from './internals'
export { Dependency, StateToScopes } from './states/Dependency'

export { IncrementalNode } from './tree/IncrementalNode'
export { PrimeNumbers } from './tree/PrimeNumbers'
export { ReadonlyTreeNode } from './tree/ReadonlyTreeNode'
export { TreeNode } from './tree/TreeNode'
export { TreePath } from './tree/TreePath'
